package com.xjh.basestudy.designmode.createMode.createMode2_Prototype.p2_shallowClone;

/**
 * @Author XuJianHua
 * @Date 2022/9/24 11:16
 * @Description 可以被克隆的敌机类
 * 让敌机类EnemyPlane实现了java.lang包中的克隆接口Cloneable，并在第29行的实现方法中调用了父类Object的克隆方法，如此一来外部就能够对本类的实例进行克隆操作了，省去了由类而生的再造过程。
 */

public class EnemyPlane implements Cloneable{

    private int x;//敌机横坐标
    private int y = 0;//敌机纵坐标

    public EnemyPlane(int x) {//构造器
        this.x = x;
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }

    public void fly(){//让敌机飞
        y++;//每调用一次，敌机飞行时纵坐标＋1
    }

    //此处开放setX，是为了让克隆后的实例重新修改横坐标
    public void setX(int x) {
        this.x = x;
    }

    //重写克隆方法
    @Override
    public EnemyPlane clone() throws CloneNotSupportedException {
        return (EnemyPlane)super.clone();
    }

}